package 框架学习.SpringBoot.应用.配置文件.参数配置化;

public class index {
    public static void main(String[] args) {
        //参数配置化：
        //详见项目springboot-study-auxiliary-system

        //项目中参数过于分散，是不便于集中维护和管理的
        //并且硬编码到代码里的参数从修改到重新运行极为不便
        //这时候就可以用参数配置化

        //配置方式1：application.properties
        //配置的参数可以写在application.properties文件中
        //项目中变量需要使用到时使用@Value(${key名称})注解就可以赋值

        //配置方式2：yml配置文件
        //后缀名可以时yml和yaml（大多数情况下是等价的）
        //而名字也必须是application（即application.yml或application.yaml）
        //yml配置文件格式为   key: value
        //而且是按照层级书写的
        //如：
        /*
            properties中
            server.port=8080
            server.address=127.0.0.1

            放到yml中
            server:
                port: 8080
                address: 127.0.0.1
        */

        //yml语法;
        //大小写敏感
        //数值前边必须有空格，作为分隔符
        //使用缩进表示层级关系，缩进时，不允许使用Tab键，只能用空格 (idea中会自动将Tab转换为空格)缩进的空格数目不重要，只要相同层级的元素左侧对齐即可
        //# 表示注释，从这个字符一直到行尾，都会被解析器忽略


        /*
            yml两种格式：

            1、对象/map集合
            user:
              name: zhangsan
              age: 18
              password: 123456


            2、数组/list/set集合
            hobby:
              - java
              - game
              - sport
        */

        //配置方式3：@ConfigurationProperties注解
        //当使用properties或yml配置时
        //代码中参数需要使用 @Value(${key名}) 进行注入
        //若参数个数过多，就会显得比较繁琐
        //这时候就可以使用@ConfigurationProperties注解来简化

        //使用@ConfigurationProperties注解的要求：
        //1、配置文件中的参数名称（key名）必须和类中变量名一致
        //2、要为实体类中的属性提供getter & setter
        //3、需要将目标类交给IOC容器管理，成为容器中的Bean
        //4、使用时需要用@ConfigurationProperties注解的prefix属性指定前缀



    }
}
